# def myfun(f):
#
#     def fun():
#         print(f"函数{f.__name__}开始执行")
#         f()
#         print(f"函数{f.__name__}执行结束")
#
#     return fun
#
# @myfun
# def f2():
#     print("520")
#
# f2()
# # f2 = myfun(f2)
# # f2()
#
#
# def f3():
#     print("没搞定")
# f3 = myfun(f3)
# f3()

# import random
# import time
#
# def get_time(f):
#     def h_time():
#         start = time.time()
#         f()
#         print(f"{f.__name__}花费时间{time.time()-start}")
#     return h_time
#
# @get_time
# def get_random():
#     for i in range(5):
#         r = random.randint(0,10)
#         print(r)
#         time.sleep(1)
#
# get_random()


# 闭包函数
def check_login(f):  # 外部函数
    def get_login():  # 内部函数
        if current is None:
            login()  # 调用登录功能
        f()  # 访问外部函数的局部变量  函数f()

    return get_login  # 外部函数返回内部函数


current = None


# 封装一个登录功能
def login():
    while True:
        name = input("请输入名字")
        password = input("请输入密码")
        if name == "admin" and password == "123":
            global current  # global 关键字 在 Python 中用于声明一个变量是全局变量 可以在函数外部的其他地方访问和修改
            current = "admin"
            print("登录成功")
            break
        else:
            print("登录失败")


# 封装首页
def index():
    print("首页")


# 调用首页
index()


@check_login  # @语法糖  调用闭包函数
# 封装个人中心
def center():
    print(f"欢迎进入个人中心,当前用户{current}")


# 调用个人中心
center()


@check_login
# 封装订单管理
def order():
    print(f"订单管理,当前用户{current}")


# 调用订单管理
order()
